package com.nowcoder.community;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.annotation.PostConstruct;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;

//这个注解标识的类就是一个配置文件，底层有一个扫描注解，会自动扫描该类所在的文件的所有包，
// 所以所有的bean都会找到，但是只会扫描加了controller、service、component(在任何地方都能用的可以加这个注解)、
// repository(数据库访问组件)等含有component的注解
@SpringBootApplication
public class CommunityApplication {

    // 管理bean的初始化方法
    // 由该注解修饰的方法会在构造器调用完之后被执行
    @PostConstruct
    public void init() {
        // 解决netty启动冲突问题:redis和es的底层都会使用到netty的一个接口，但是redis会初始化netty，es也会初始化netty，
        // 但是es比redis晚，所以当es初始化时就会报错，netty会认为已经有一个人初始化我了，下一个就会报错，但是可以改变一个
        // 值就可以避免这种情况
        // Netty4Utils：setAvailableProcessors这个方法
        // 由于这个类是整个项目的启动类，所以会最先被启动，所以在这里修改
        System.setProperty("es.set.netty.runtime.available.processors", "false");
    }

    public static void main(String[] args) {
        //会自动创建bean容器，
        SpringApplication.run(CommunityApplication.class, args);
    }

}
